<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // set,get 用来做拦截器
    var obj = { a: 1 }
    var _age = 13
    Object.defineProperty(obj, 'age', {
      // 获取属性时，会调用get函数，
      // 同时，函数的返回值就是当前的属性值
      get:function () {
        console.log('有人获取age属性')
        if( Math.random() > 0.5 ) {
          return _age
        } else {
          return _age - 10
        }
      },
      set: function (val) {
        console.log('有人设置age属性',val)
        if (val > 30) {
          alert('不能这么大，回退到13')
          _age = 13
        } else {
          _age = val
        }
      }
      // value: 1 , get,set不能与value，writable共存
    })

    


    // var obj = { a: 1 }
    
    // Object.defineProperty(obj, 'age', {
    //   // 获取属性时，会调用get函数，
    //   // 同时，函数的返回值就是当前的属性值
    //   get:function () {
    //     console.log('有人获取age属性')
    //     return 13
    //   },
    //   set: function (val) {
    //     console.log('有人设置age属性',val)
    //   }
    //   // value: 1 , get,set不能与value，writable共存
    // })
  </script>
</body>
</html>